package ir.ac.iust.nlp.dependencyparser.phrasestructuregraph; import ir.ac.iust.nlp.dependencyparser.BasePanel; import javax.swing.JOptionPane; import org.maltparser.core.syntaxgraph.PhraseStructureGraph; /** * * @author Mojtaba Khallash */ public class CreatePSGPanel extends BasePanel { PhraseStructureGraph graph; CreatePhraseStructureGraph creator; /** * Creates new form CreatePSGPanel */ public CreatePSGPanel(String dir) { super(dir); initComponents(); } /** * This method is called from within the constructor to initialize the form. * WARNING: Do NOT modify this code. The content of this method is always * regenerated by the Form Editor. */ @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents private void initComponents() { pnlDependencyRelation = new javax.swing.JPanel(); lblHead = new javax.swing.JLabel(); cboHead = new javax.swing.JComboBox(); lblModifier = new javax.swing.JLabel(); cboModifier = new javax.swing.JComboBox(); lblLabel = new javax.swing.JLabel(); cboLabel = new javax.swing.JComboBox(); btnAddEdge = new javax.swing.JToggleButton(); pnlDependencyNode = new javax.swing.JPanel(); lblWordForm = new javax.swing.JLabel(); lblPOSTag = new javax.swing.JLabel(); txtWordForm = new javax.swing.JTextField(); btnAddNode = new javax.swing.JButton(); cboPOSTag = new javax.swing.JComboBox(); jLabel1 = new javax.swing.JLabel(); cboCategory = new javax.swing.JComboBox(); jLabel2 = new javax.swing.JLabel(); jPanel1 = new javax.swing.JPanel(); pnlDependencyRelation.setBorder(javax.swing.BorderFactory.createTitledBorder("Dependency Relation (Edge)")); lblHead.setText("Head"); cboHead.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "ROOT" })); lblModifier.setText("Modifier"); cboModifier.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "ROOT" })); lblLabel.setText("Label"); cboLabel.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "PRED", "SUB", "OBJ", "HD" })); btnAddEdge.setText("Add"); btnAddEdge.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnAddEdge_Click(evt); } }); javax.swing.GroupLayout pnlDependencyRelationLayout = new javax.swing.GroupLayout(pnlDependencyRelation); pnlDependencyRelation.setLayout(pnlDependencyRelationLayout); pnlDependencyRelationLayout.setHorizontalGroup( pnlDependencyRelationLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(pnlDependencyRelationLayout.createSequentialGroup() .addGap(22, 22, 22) .addGroup(pnlDependencyRelationLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addGroup(pnlDependencyRelationLayout.createSequentialGroup() .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 233, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(btnAddEdge)) .addGroup(pnlDependencyRelationLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(pnlDependencyRelationLayout.createSequentialGroup() .addComponent(lblHead) .addGap(30, 30, 30) .addComponent(cboHead, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addGroup(pnlDependencyRelationLayout.createSequentialGroup() .addGroup(pnlDependencyRelationLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(lblModifier) .addComponent(lblLabel)) .addGap(18, 18, 18) .addGroup(pnlDependencyRelationLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(cboModifier, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(cboLabel, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))))) .addGap(31, 31, 31)) ); pnlDependencyRelationLayout.setVerticalGroup( pnlDependencyRelationLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(pnlDependencyRelationLayout.createSequentialGroup() .addGroup(pnlDependencyRelationLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(lblHead) .addComponent(cboHead, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(pnlDependencyRelationLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(lblModifier) .addComponent(cboModifier, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(pnlDependencyRelationLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(lblLabel) .addComponent(cboLabel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(btnAddEdge) .addGap(0, 6, Short.MAX_VALUE)) ); pnlDependencyNode.setBorder(javax.swing.BorderFactory.createTitledBorder("Dependency Node")); lblWordForm.setText("Word Form"); lblPOSTag.setText("POS Tag"); btnAddNode.setText("Add"); btnAddNode.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnAddNode_Click(evt); } }); cboPOSTag.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "N", "V" })); jLabel1.setText("Category"); cboCategory.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "S", "NP", "VP" })); javax.swing.GroupLayout pnlDependencyNodeLayout = new javax.swing.GroupLayout(pnlDependencyNode); pnlDependencyNode.setLayout(pnlDependencyNodeLayout); pnlDependencyNodeLayout.setHorizontalGroup( pnlDependencyNodeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(pnlDependencyNodeLayout.createSequentialGroup() .addGap(23, 23, 23) .addGroup(pnlDependencyNodeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addGroup(pnlDependencyNodeLayout.createSequentialGroup() .addComponent(jLabel1) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(cboCategory, javax.swing.GroupLayout.PREFERRED_SIZE, 234, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGroup(pnlDependencyNodeLayout.createSequentialGroup() .addGap(0, 0, Short.MAX_VALUE) .addComponent(btnAddNode)) .addGroup(javax.swing.GroupLayout.Alignment.LEADING, pnlDependencyNodeLayout.createSequentialGroup() .addComponent(lblPOSTag) .addGap(18, 18, 18) .addComponent(cboPOSTag, javax.swing.GroupLayout.PREFERRED_SIZE, 230, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGroup(javax.swing.GroupLayout.Alignment.LEADING, pnlDependencyNodeLayout.createSequentialGroup() .addComponent(lblWordForm) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(txtWordForm, javax.swing.GroupLayout.PREFERRED_SIZE, 236, javax.swing.GroupLayout.PREFERRED_SIZE))) .addGap(25, 25, 25)) ); pnlDependencyNodeLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {cboCategory, cboPOSTag}); pnlDependencyNodeLayout.setVerticalGroup( pnlDependencyNodeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(pnlDependencyNodeLayout.createSequentialGroup() .addGroup(pnlDependencyNodeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(lblWordForm) .addComponent(txtWordForm, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(pnlDependencyNodeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(lblPOSTag) .addComponent(cboPOSTag, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(pnlDependencyNodeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(cboCategory, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel1)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(btnAddNode) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); jLabel2.setFont(new java.awt.Font("Tahoma", 1, 18)); // NOI18N jLabel2.setText("Create Phrase-Structure Graph"); jPanel1.setBorder(javax.swing.BorderFactory.createEtchedBorder()); jPanel1.setPreferredSize(new java.awt.Dimension(380, 2)); javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); jPanel1.setLayout(jPanel1Layout); jPanel1Layout.setHorizontalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 0, Short.MAX_VALUE) ); jPanel1Layout.setVerticalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 0, Short.MAX_VALUE) ); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); this.setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addComponent(pnlDependencyNode, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(18, 18, Short.MAX_VALUE) .addComponent(pnlDependencyRelation, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, 720, Short.MAX_VALUE) .addGroup(layout.createSequentialGroup() .addComponent(jLabel2) .addGap(0, 0, Short.MAX_VALUE))) .addContainerGap()) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addComponent(jLabel2) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(pnlDependencyNode, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(pnlDependencyRelation, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addContainerGap(199, Short.MAX_VALUE)) ); }// </editor-fold>//GEN-END:initComponents private void btnAddEdge_Click(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnAddEdge_Click try { creator.addPhraseStructureEdge(cboHead.getSelectedIndex(), cboModifier.getSelectedIndex(), cboLabel.getSelectedItem().toString()); //???????????? graph = creator.getDependencyGraph(); System.out.println(graph); } catch (Exception e) { System.err.println("MaltParser exception : " + e.getMessage()); } }//GEN-LAST:event_btnAddEdge_Click private void btnAddNode_Click(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnAddNode_Click try { creator.addPhraseStructureNode(txtWordForm.getText(), cboPOSTag.getSelectedItem().toString(), cboCategory.getSelectedItem().toString()); cboHead.addItem(txtWordForm.getText()); cboModifier.addItem(txtWordForm.getText()); //???????????? graph = creator.getDependencyGraph(); System.out.println(graph); } catch (Exception e) { System.err.println("MaltParser exception : " + e.getMessage()); } }//GEN-LAST:event_btnAddNode_Click @Override public boolean canSave() { return false; } @Override public void save() { JOptionPane.showConfirmDialog(this, "Saving Create Phrase Structure Graph"); } @Override public void saveAs() { save(); } @Override public void threadFinished() { } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JToggleButton btnAddEdge; private javax.swing.JButton btnAddNode; private javax.swing.JComboBox cboCategory; private javax.swing.JComboBox cboHead; private javax.swing.JComboBox cboLabel; private javax.swing.JComboBox cboModifier; private javax.swing.JComboBox cboPOSTag; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; private javax.swing.JPanel jPanel1; private javax.swing.JLabel lblHead; private javax.swing.JLabel lblLabel; private javax.swing.JLabel lblModifier; private javax.swing.JLabel lblPOSTag; private javax.swing.JLabel lblWordForm; private javax.swing.JPanel pnlDependencyNode; private javax.swing.JPanel pnlDependencyRelation; private javax.swing.JTextField txtWordForm; // End of variables declaration//GEN-END:variables }